﻿@page "/项目经理产值"
@layout MainLayout2
@rendermode InteractiveServer
@inject ToastService ToastService
@inject AuthenticationStateProvider customAuthenticationStateProvider
@inject SqlSugarScope _SqlSugarScope
@inject NavigationManager NavigationManager

<BootstrapBlazorRoot>
    <h3>项目经理产值</h3>
    <h3>计量单位:万元</h3>
    <div class="row g-3">
        <div class="col-12 col-sm-auto">
            <DateTimePicker @bind-Value="@ValidateFormValue" DisplayText="月度" ViewMode="DatePickerViewMode.Month" Format="yyyy-MM" />
        </div>
        <div class="col-12 col-sm-auto align-self-end">
            <Button Icon="fa-solid fa-arrows-rotate" Text="查询" OnClick="OnClick" class="col-12 col-sm-auto" />
        </div>
    </div>
    <Table TItem="项目经理产值DTO" RenderMode="TableRenderMode.Table" Items="@Items" IsStriped="true" IsBordered="true" IsFixedHeader="true">
        <TableColumns>
            <TableColumn @bind-Field="@context.项目经理" />
            <TableColumn FormatString ="N2" @bind-Field="@context.本月" />
            <TableColumn FormatString="N2" @bind-Field="@context.本年" />
        </TableColumns>
    </Table>
</BootstrapBlazorRoot>

@code {
    [NotNull]
    private List<项目经理产值DTO>? Items = new List<项目经理产值DTO>();

    private DateTime ValidateFormValue;

    protected override async Task OnInitializedAsync()
    {
        // 查询();
    }
    private void OnClick()
    {
        查询(ValidateFormValue.ToShortDateString());
        StateHasChanged();
    }

    private void 查询()
    {
        Items.Clear();
        string sql项目经理 = $@"select 项目经理,Convert(decimal(18,2),sum(本月)/10000) 本月,Convert(decimal(18,2),sum(本年)/10000) 本年 from (
                    select 项目经理, 合同产值 本月,0 本年 from View_项目经理产值报表 where DATEDIFF(MONTH,施工开始时间,GETDATE()) = 0
                    union all
                    select 项目经理, 0 本月,合同产值 本年 from View_项目经理产值报表 where DATEDIFF(YEAR,施工开始时间,GETDATE()) = 0
                    )t group by 项目经理
                    order by 项目经理
                    ";
        var a = _SqlSugarScope.Ado.SqlQuery<项目经理产值DTO>(sql项目经理);
        Items.AddRange(a);

        string sql测绘 = $@"select 项目经理,Convert(decimal(18,2),sum(本月)/10000) 本月,Convert(decimal(18,2),sum(本年)/10000) 本年 from (
                   select '测绘' 项目经理,经理作业量*项目任务明细含税单价 本月,0 本年  from Bus_合同分拆报工 where 分拆类型 = '内包'  and DATEDIFF(MONTH,施工开始时间,GETDATE()) = 0
                   union all
                   select '测绘' 项目经理,0 本月,经理作业量*项目任务明细含税单价 本年  from Bus_合同分拆报工 where 分拆类型 = '内包'  and DATEDIFF(YEAR,施工开始时间,GETDATE()) = 0
                    )t group by 项目经理
                    order by 项目经理
                    ";
        var b = _SqlSugarScope.Ado.SqlQuery<项目经理产值DTO>(sql测绘);
        Items.AddRange(b);

        string sql外包 = $@"select 项目经理,Convert(decimal(18,2),sum(本月)/10000) 本月,Convert(decimal(18,2),sum(本年)/10000) 本年 from (
                  select 报工班组 项目经理,经理作业量*项目任务明细含税单价 本月,0 本年  from Bus_合同分拆报工 where 分拆类型 = '外包'  and DATEDIFF(MONTH,施工开始时间,GETDATE()) = 0
                    union all
                    select 报工班组 项目经理,0 本月,经理作业量*项目任务明细含税单价 本年  from Bus_合同分拆报工 where 分拆类型 = '外包'  and DATEDIFF(YEAR,施工开始时间,GETDATE()) = 0
                    )t group by 项目经理
                    order by 项目经理
                    ";
        var c = _SqlSugarScope.Ado.SqlQuery<项目经理产值DTO>(sql外包);
        Items.AddRange(c);

    }

    private void 查询(string ValidateFormValue)
    {
        Items.Clear();
        string sql项目经理 = $@"select 项目经理,Convert(decimal(18,2),sum(本月)/10000) 本月,Convert(decimal(18,2),sum(本年)/10000) 本年 from (
                    select 项目经理, 合同产值 本月,0 本年 from View_项目经理产值报表 where DATEDIFF(MONTH,施工开始时间,'{ValidateFormValue}') = 0
                    union all
                    select 项目经理, 0 本月,合同产值 本年 from View_项目经理产值报表 where DATEDIFF(YEAR,施工开始时间,'{ValidateFormValue}') = 0
                    )t group by 项目经理
                    order by 项目经理
                    ";
        var a = _SqlSugarScope.Ado.SqlQuery<项目经理产值DTO>(sql项目经理);
        Items.AddRange(a);

        string sql测绘 = $@"select 项目经理,Convert(decimal(18,2),sum(本月)/10000) 本月,Convert(decimal(18,2),sum(本年)/10000) 本年 from (
                   select '测绘' 项目经理,经理作业量*项目任务明细含税单价 本月,0 本年  from Bus_合同分拆报工 where 分拆类型 = '内包'  and DATEDIFF(MONTH,施工开始时间,'{ValidateFormValue}') = 0
                   union all
                   select '测绘' 项目经理,0 本月,经理作业量*项目任务明细含税单价 本年  from Bus_合同分拆报工 where 分拆类型 = '内包'  and DATEDIFF(YEAR,施工开始时间,'{ValidateFormValue}') = 0
                    )t group by 项目经理
                    order by 项目经理
                    ";
        var b = _SqlSugarScope.Ado.SqlQuery<项目经理产值DTO>(sql测绘);
        Items.AddRange(b);

        string sql外包 = $@"select 项目经理,Convert(decimal(18,2),sum(本月)/10000) 本月,Convert(decimal(18,2),sum(本年)/10000) 本年 from (
                  select 报工班组 项目经理,经理作业量*项目任务明细含税单价 本月,0 本年  from Bus_合同分拆报工 where 分拆类型 = '外包'  and DATEDIFF(MONTH,施工开始时间,'{ValidateFormValue}') = 0
                    union all
                    select 报工班组 项目经理,0 本月,经理作业量*项目任务明细含税单价 本年  from Bus_合同分拆报工 where 分拆类型 = '外包'  and DATEDIFF(YEAR,施工开始时间,'{ValidateFormValue}') = 0
                    )t group by 项目经理
                    order by 项目经理
                    ";
        var c = _SqlSugarScope.Ado.SqlQuery<项目经理产值DTO>(sql外包);
        Items.AddRange(c);

    }
}
